package com.itkjb.leisurely.resource.sys.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.itkjb.leisurely.core.base.BaseModelWithOperationFields;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;

/**
 * <p>
 * 系统字典表
 * </p>
 *
 * @author itkjb.com
 * @since 2020-06-19
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_dict")
@ApiModel(value="SysDictModel-模型", description="系统字典")
public class SysDictModel extends BaseModelWithOperationFields {

    private static final long serialVersionUID=1L;

    private String id;

    /**
     * 字典标识（所属字典）
     */
    @ApiModelProperty(value = "字典标识（所属字典）")
    @NotNull(message = "字典标识不能为空")
    private String dictLabel;

    /**
     * 索引值
     */
    @ApiModelProperty(value = "索引值")
    @TableField("`key`")
    @NotNull(message = "字典索引不能为空")
    private String key;

    /**
     * 索引值对应名称
     */
    @NotNull(message = "字典值不能为空")
    @ApiModelProperty(value = "索引值对应名称")
    @TableField("`value`")
    private String value;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    private Integer paixu;

    /**
     * 父级id
     */
    @ApiModelProperty(value = "父级id")
    private String parentId;

    /**
     * 描述
     */
    @ApiModelProperty(value = "描述")
    private String description;

    /**
     * 字典类型 默认0：字典，1：字典详情
     */
    @ApiModelProperty(value = "字典类型 默认0：字典，1：字典详情")
    private Integer dictType;

    @ApiModelProperty(value = "字典分组id")
    private String dictGroupId;

    @ApiModelProperty(value = "字典分组名称")
    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    @TableField(exist = false)
    private String dictGroupName;

    /**
     * 部门id
     */
    @ApiModelProperty(value = "部门id")
    private String depId;

    /**
     * 状态  0：禁用 ，1： 可用
     */
    @ApiModelProperty(value = "状态  0：禁用 ，1： 可用")
    private Integer status;

    /**
     * 乐观锁版本号
     */
    @ApiModelProperty(value = "乐观锁版本号")
    @NotNull(message = "缺少版本号参数")
    @Version
    private Long lockVersion;

    @TableField(exist = false)
    @ApiModelProperty(value = "同步更新字典详情中的label")
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private boolean needUpdateSubLabel;


}
